﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
using File_Manager.Models;
using PagedList;
using System.IO;

namespace File_Manager.Controllers
{
    public class ProblemarioController : Controller
    {

        private CYTContext db = new CYTContext();

        //***********************************************************************************//
        // Autor:  		Adrian Di Puglia			                	     				*//
        //***********************************************************************************//
        // Index()	Acceso ADMINISTRADOR        						        			*//
        // Acción que devuelve la vista de todos los ítems de Problemario listados   	    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	msn: mensaje para notififcar fallos											*//
        // Salida:  Vista que posee todos los Problemarios listados deseados.	            *//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult Index(string msn)
        {
            ViewBag.msn = msn;
            var Problemario = (from m in db.Problemario
                                       where m.idEstado != 3
                                       select m).ToList();
            if (Problemario.Count()!=0)
            {
                /*Calculo de Fecha de Expiración para el Contador*/
                var problemario_exp_date = Problemario.FirstOrDefault();
                ViewBag.fecha_exp = Convert.ToDateTime(problemario_exp_date.fecha_exp).ToString("dd/MM/yyyy");
                ViewBag.year = problemario_exp_date.fecha_exp.Value.Year;
                ViewBag.month = problemario_exp_date.fecha_exp.Value.Month;
                ViewBag.day = problemario_exp_date.fecha_exp.Value.Day; 
            }

            return View(Problemario);
        }


        //***********************************************************************************//
        // Autor:  		Adrian Di Puglia			                	     				*//
        //***********************************************************************************//
        // SearchIndex()	Acceso ADMINISTRADOR						        			*//
        // Acción que devuelve la vista de todos los ítems de Usario listados, 		        *//
        // 	paginados y con opción de búsqueda.												*//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	Page: entero que denota el numero de pagina que se tiene en la lista de 	*//
        // 		búsqueda, por defecto es 1.													*//
        // •	Parámetros con prefijo search: caracteres por los cuales se va a filtrar la *//
        // 		búsqueda. 																	*//
        // •	Parámetros con prefijo current: caracteres que guardan la ultima búsqueda de*// 
        // 		filtrado para mantenerla durante los cambios de página. 					*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los Usarios listados deseados.				    *//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult SearchIndex(string msn, string currentName, string searchName, string currentLastName, string searchLastName,
                                        int? SearchTurno, int? SearchSede, int? SearchModoPago, string SearchRol, int? SearchStatus, int? page = 1)
        {

            var user = db.User_I.AsQueryable();
            var User_IList = new List<User_I>();

            //Metodo GET Inicializar las variables con los valores de busqueda introducidos
            if (Request.HttpMethod == "GET")
            {
                searchName = currentName;
                searchLastName = currentLastName;
                ViewBag.msn = msn;
                ViewBag.SearchTurno = new SelectList(db.Turno, "idTurno", "name");
                ViewBag.SearchSede = new SelectList(db.Sede, "idSede", "name");
                ViewBag.SearchModoPago = new SelectList(db.ModoPago, "idModoPago", "name");
                ViewBag.SearchRol = new SelectList(db.Rol, "idRol", "name");
                ViewBag.SearchStatus = new SelectList(db.Status, "idStatus", "name");
            }
            else
            {
                page = 1;
            }

            //Metodo POST Inicializar las variables con los valores de busqueda introducidos
            ViewBag.CurrentName = searchName;
            ViewBag.CurrentLastName = searchLastName;

            ViewBag.SearchTurno = new SelectList(db.Turno, "idTurno", "name", SearchTurno);
            ViewBag.CurrentTurno = SearchTurno;

            ViewBag.SearchSede = new SelectList(db.Sede, "idSede", "name", SearchSede);
            ViewBag.CurrentSede = SearchSede;

            ViewBag.SearchModoPago = new SelectList(db.ModoPago, "idModoPago", "name", SearchModoPago);
            ViewBag.CurrentModoPago = SearchModoPago;

            ViewBag.SearchRol = new SelectList(db.Rol, "idRol", "name", SearchRol);
            ViewBag.CurrentRol = SearchRol;

            ViewBag.SearchStatus = new SelectList(db.Status, "idStatus", "name", SearchStatus);
            ViewBag.CurrentStatus = SearchStatus;

            int pageSize = 10;
            int pageIndex = (page ?? 1);

            //Filtrado por los parametros en entrada capturado en al interfaz
            if (SearchTurno == null && SearchSede == null && SearchModoPago == null && SearchRol == null && SearchStatus == null)
            {
                User_IList = user.ToList();
            }
            else
            {
                if (SearchTurno != null)
                {
                    user = user.Where(m => m.idTurno == SearchTurno);
                }

                if (SearchSede != null)
                {
                    user = user.Where(m => m.idSede == SearchSede);
                }

                if (SearchModoPago != null)
                {
                    user = user.Where(m => m.idModoPago == SearchModoPago);
                }

                if (SearchRol != "" && SearchRol != null)
                {
                    user = user.Where(m => m.idRol == SearchRol);
                }

                if (SearchStatus != null)
                {
                    user = user.Where(m => m.idStatus == SearchStatus);
                }
            }

            if (!String.IsNullOrEmpty(searchName))
            {
                user = user.Where(m => m.name.Contains(searchName));
            }

            if (!String.IsNullOrEmpty(searchLastName))
            {
                user = user.Where(m => m.last_name.Contains(searchLastName));
            }

            //Ordenar los User del return
            User_IList = user.OrderBy(x => x.registerDate).ToList();

            return View(User_IList.ToPagedList(pageIndex, pageSize));
        }


        //***********************************************************************************//
        // Autor:  									                	     				*//
        //***********************************************************************************//
        // Create()	Acceso solo ADMINISTRADOR												*//
        // Acción que devuelve la vista que permite Crear un Problemario especificada.     	*//
        // Método GET.																		*//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Usuario que se desea editar.							*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee la plantilla para Crear el usuario desado.	        	*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult Create(int? step, int? jor, DateTime? exp)
        {
            Problemario Problemario = (from m in db.Problemario
                        where  m.idEstado == 1
                        select m).FirstOrDefault();
            /*Verificación de que NO hay PROBLEMARIOS ACTIVOS*/
            if (Problemario == null)
            {
                if (step != null)
                {
                    if (step == 2)
                    {
                        ViewBag.idRol = new SelectList(new[]
                                    {
                                        new SelectListItem{ Value = "ALL", Text = "Grupo Unico" },
                                        new SelectListItem{ Value = "Guest_C", Text = "Ciencias de la Salud" },
                                        new SelectListItem{ Value = "Guest_H", Text = "Humanidades y Sociales" },
                                        new SelectListItem{ Value = "Guest_I", Text = "Ingeniería y Ciencias Básicas" }
                                    }, "Value", "Text", "Guest_H");
                    }
                    else if (step == 3)
                    {
                        ViewBag.idRol = new SelectList(new[]
                                    {
                                        new SelectListItem{ Value = "ALL", Text = "Grupo Unico" },
                                        new SelectListItem{ Value = "Guest_C", Text = "Ciencias de la Salud" },
                                        new SelectListItem{ Value = "Guest_H", Text = "Humanidades y Sociales" },
                                        new SelectListItem{ Value = "Guest_I", Text = "Ingeniería y Ciencias Básicas" }
                                    }, "Value", "Text", "Guest_I");
                    }
                    else if (step > 3 || step == 1)
                    {
                        return RedirectToAction("Create", "Problemario");
                    }

                    ViewBag.idEtapa = new SelectList(db.Etapa, "idEtapa", "name", 2);
                    ViewBag.Problemario_idJornada = jor;
                    ViewBag.Problemario_fecha_exp = Convert.ToDateTime(exp).ToString("dd/MM/yyyy");
                    ViewBag.step = step;
                    ViewBag.stepF = 3;

                }
                else
                {
                    ViewBag.step = 1;
                    ViewBag.stepF = 1;
                    ViewBag.idEtapa = new SelectList(db.Etapa, "idEtapa", "name");
                    ViewBag.idRol = new SelectList(new[]
                                {
                                    new SelectListItem{ Value = "ALL", Text = "Grupo Unico" },
                                    new SelectListItem{ Value = "Guest_C", Text = "Ciencias de la Salud" },
                                    new SelectListItem{ Value = "Guest_H", Text = "Humanidades y Sociales" },
                                    new SelectListItem{ Value = "Guest_I", Text = "Ingeniería y Ciencias Básicas" }
                                }, "Value", "Text");
                }


                ViewBag.idMateria_1 = new SelectList(db.Materia_1, "idMateria_1", "name");
                ViewBag.idMateria_2 = new SelectList(db.Materia_2, "idMateria_2", "name");
                ViewBag.idMateria_3 = new SelectList(db.Materia_3, "idMateria_3", "name");

                return View();
            }
            else
            {
                return RedirectToAction("Index", "Problemario", new { msn = "No se puede Crear un Problemario, ya que existe otro Activo. Debe Cerrarlo para Generar Uno Nuevo" });
            }
        }


        //***********************************************************************************//
        // Autor:  		Adrian Di Puglia    		                	     				*//
        //***********************************************************************************//
        // Create()	Acceso solo ADMINISTRADOR					        					*//
        // Acción que devuelve la vista que permite Crear un Problemario especificado. 	    *//
        // Método POST.																		*//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	usuario: dato de tipo modelo, que representa un usuario, este es        	*//
        //		requerido para verificar que los datos suministrados son correctos,  para 	*//
        //		así Editar o enviar un mensaje de error en la aplicación.  					*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que devuelve el Problemario Creado cuota.	    	    			*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        [HttpPost]
        public ActionResult Create(FormCollection collection, CargaProblemario model, HttpPostedFileBase file, string idRol, int step)
        {
            if (ModelState.IsValid)
            {
                step = step + 1;

                /***** Manejo PROBLEMARIO.dbo /*****/
                model.Problemario.idEtapa = Convert.ToInt32(collection["idEtapa"]);
                model.Problemario.idRol = idRol; //collection["idRol"];
                model.Problemario.idMateria_1 = Convert.ToInt32(collection["idMateria_1"]);
                model.Problemario.idMateria_2 = Convert.ToInt32(collection["idMateria_2"]);
                model.Problemario.idMateria_3 = Convert.ToInt32(collection["idMateria_3"]);
                model.Problemario.idEstado = 2; /* INACTIVO */

                db.Problemario.Add(model.Problemario);
                db.SaveChanges();

                /***** Manejo PREGUNTA.dbo /*****/
                var idPU = (from m in db.Problemario
                            orderby m.idPU descending
                            select m.idPU).FirstOrDefault();
                model.Pregunta.idPU = idPU;
                model.Pregunta.idMateria_1 = Convert.ToInt32(collection["idMateria_1"]);
                model.Pregunta.idMateria_2 = Convert.ToInt32(collection["idMateria_2"]);
                model.Pregunta.idMateria_3 = Convert.ToInt32(collection["idMateria_3"]);
                /********************************************************************************/
                /********************************* PREGUNTA 1 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 1; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P1"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 1; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P1"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 1; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P1"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 2 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 2; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P2"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 2; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P2"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 2; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P2"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 3 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 3; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P3"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 3; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P3"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 3; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P3"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 4 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 4; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P4"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 4; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P4"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 4; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P4"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 5 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 5; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P5"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 5; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P5"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 5; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P5"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 6 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 6; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P6"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 6; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P6"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 6; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P6"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 7 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 7; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P7"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 7; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P7"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 7; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P7"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 8 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 8; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P8"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 8; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P8"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 8; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P8"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 9 ***********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 9; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P9"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 9; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P9"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 9; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P9"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 10 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 10; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P10"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 10; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P10"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 10; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P10"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 11 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 11; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P11"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 11; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P11"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 11; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P11"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 12 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 12; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P12"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 12; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P12"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 12; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P12"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 13 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 13; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P13"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 13; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P13"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 13; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P13"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 14 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 14; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P14"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 14; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P14"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 14; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P14"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 15 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 15; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P15"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 15; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P15"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 15; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P15"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 16 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 16; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P16"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 16; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P16"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 16; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P16"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 17 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 17; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P17"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 17; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P17"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 17; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P17"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 18 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 18; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P18"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 18; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P18"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 18; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P18"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 19 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 19; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P19"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 19; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P19"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 19; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P19"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/
                /********************************* PREGUNTA 20 **********************************/
                //Materia 1
                model.Pregunta.Pregunta_1 = 20; //#P
                model.Pregunta.Respuesta_1 = collection["M1_P20"];
                //Materia 2
                model.Pregunta.Pregunta_2 = 20; //#P
                model.Pregunta.Respuesta_2 = collection["M2_P20"];
                //Materia 3
                model.Pregunta.Pregunta_3 = 20; //#P
                model.Pregunta.Respuesta_3 = collection["M3_P20"];

                db.Pregunta.Add(model.Pregunta);
                db.SaveChanges();

                /********************************************************************************/


                if (file != null && file.ContentLength > 0)
                {
                    // extract only the fielname
                    var fileName = Path.GetFileName(file.FileName);
                    // store the file inside ~/App_Data/uploads folder
                    var path = Path.Combine(Server.MapPath("~/Problemarios PDF/"), fileName);
                    file.SaveAs(path);
                }

                if (Convert.ToInt32(collection["idEtapa"]) == 1)
                {
                    return RedirectToAction("Index", "Problemario", new { msn = "Problemario Creado Exitosamente, por favor Activarlo, en la Opción Habilitar"});
                }
                else
                {
                    if (step < 4)
                    {
                        return RedirectToAction("Create", "Problemario", new { step = step, jor = model.Problemario.idJornada, exp = model.Problemario.fecha_exp });
                    }
                    else
                    {
                        return RedirectToAction("Index", "Problemario", new { msn = "Problemarios Creados Exitosamente, por favor Activarlos, en la Opción Habilitar. PD: Con la Activación de Uno (1), se activarán los Tres (3) Problemarios de la Jornada." });
                    }

                }

            }


            // creación de una SELECTLIST a partir de un array de SELECTLISTITEMS
            ViewBag.idRol = new SelectList(new[]
                            {
                                new SelectListItem{ Value = "ALL", Text = "Grupo Unico" },
                                new SelectListItem{ Value = "Guest_C", Text = "Ciencias de la Salud" },
                                new SelectListItem{ Value = "Guest_H", Text = "Humanidades y Sociales" },
                                new SelectListItem{ Value = "Guest_I", Text = "Ingeniería y Ciencias Básicas" }
                            }, "Value", "Text", collection["idRol"]);
            ViewBag.idEtapa = new SelectList(db.Etapa, "idEtapa", "name", Convert.ToInt32(collection["idEtapa"]));
            ViewBag.idMateria_1 = new SelectList(db.Materia_1, "idMateria_1", "name", Convert.ToInt32(collection["idMateria_1"]));
            ViewBag.idMateria_2 = new SelectList(db.Materia_2, "idMateria_2", "name", Convert.ToInt32(collection["idMateria_2"]));
            ViewBag.idMateria_3 = new SelectList(db.Materia_3, "idMateria_3", "name", Convert.ToInt32(collection["idMateria_3"]));


            return View(model);
        }


        //***********************************************************************************//
        // Autor:  									                	     				*//
        //***********************************************************************************//
        // Respuesta()	Acceso solo USUARIO				        							*//
        // Acción que devuelve la vista que permite Responder un Problemario especificada.  *//
        // Método GET.																		*//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Usuario que se desea editar.							*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee la plantilla para Responder el Problemario deseado.    	*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Guest_C, Guest_H, Guest_I")]
        public ActionResult Respuesta()
        {
            var current_user = User.Identity.Name;
            var rol = db.User_I.Find(current_user).idRol;

            /*** Busqueda de Problemario ETAPA 1 ***/
            Problemario Problemario = (from m in db.Problemario
                                       where  m.idEtapa == 1 && m.idEstado == 1
                                       select m).FirstOrDefault();
            if (Problemario == null)
            {
            /*** Busqueda de Problemario ETAPA 2 ***/
                Problemario = (from m in db.Problemario
                               where m.idEtapa == 2 && m.idRol == rol && m.idEstado == 1
                               select m).FirstOrDefault();

                if (Problemario !=null)
                {
                    ViewBag.Rol = db.Rol.Find(Problemario.idRol).name;
                }
            }
            else
            {
                ViewBag.Rol = "Grupo Único";
            }

            if (Problemario !=null)
            {
                /*** VERIFICAR QUE EL PROBLEMARIO A RESPONDER NO FUE CONTESTADO YA POR EL USUARIO - Tabla PROBLEMARIO_USER_I.dbo ***/
                var Problemario_User_I = (from m in db.Problemario_User_I
                                          where m.idPU == Problemario.idPU && m.UserName == current_user
                                          select m).FirstOrDefault();

                if (Problemario_User_I==null)
                {
                    ViewBag.Etapa = db.Etapa.Find(Problemario.idEtapa).name;
                    ViewBag.Jornada = Problemario.idJornada;
                    ViewBag.idPU = Problemario.idPU;

                    ViewBag.src = "../../Problemarios PDF/" + Problemario.file_name;

                    ViewBag.Materia_1 = db.Materia_1.Find(Problemario.idMateria_1).name;
                    ViewBag.Materia_2 = db.Materia_2.Find(Problemario.idMateria_2).name;
                    ViewBag.Materia_3 = db.Materia_3.Find(Problemario.idMateria_3).name;

                    var exp_date = Problemario.fecha_exp;
                    ViewBag.fecha_exp = Convert.ToDateTime(exp_date).ToString("dd/MM/yyyy");
                    ViewBag.year = exp_date.Value.Year;
                    ViewBag.month = exp_date.Value.Month;
                    ViewBag.day = exp_date.Value.Day;

                    return View();
                }
                else
                {
                    return RedirectToAction("Index", "Home", new { msn = "Ya respondió el Problemario Activo, para más Información visite el Reporte General." });   
                }

            }
            else
            {
                return RedirectToAction("Index", "Home", new { msn = "No existen Problemarios Pendientes por Resolver"});
            }
        }


        //***********************************************************************************//
        // Autor:  		Adrian Di Puglia    		                	     				*//
        //***********************************************************************************//
        // Respuesta()	Acceso solo USUARIO     					        				*//
        // Acción que devuelve la vista que permite Crear un Problemario especificado. 	    *//
        // Método POST.																		*//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	usuario: dato de tipo modelo, que representa un usuario, este es        	*//
        //		requerido para verificar que los datos suministrados son correctos,  para 	*//
        //		así Editar o enviar un mensaje de error en la aplicación.  					*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que devuelve el Problemario Respuesto.	    	    			*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Guest_C, Guest_H, Guest_I")]
        [HttpPost]
        public ActionResult Respuesta(FormCollection collection, RespuestaProblemario model)
        {
            var current_user = User.Identity.Name;
            var idPU = Convert.ToInt32(collection["idPU"]);

            var Problemario_estado = (from m in db.Problemario
                                      where m.idPU == idPU
                                      select m.idEstado).FirstOrDefault();
            if (Problemario_estado==1)
            {
                var Problemario_User_I = (from m in db.Problemario_User_I
                                          where m.idPU ==idPU && m.UserName == current_user
                                          select m).FirstOrDefault();
                if (Problemario_User_I == null)
                {
                    if (ModelState.IsValid)
                    {
                        Problemario Problemario = (from m in db.Problemario
                                                   where m.idPU == idPU
                                                   select m).FirstOrDefault();

                        Pregunta Pregunta = (from m in db.Pregunta
                                             where m.idPU == idPU
                                             orderby m.idPR ascending 
                                             select m).FirstOrDefault();

                        /***** Manejo Respuestas.dbo /*****/
                        model.Respuesta.UserName = current_user;
                        model.Respuesta.idMateria_1 = Problemario.idMateria_1;
                        model.Respuesta.idMateria_2 = Problemario.idMateria_2;
                        model.Respuesta.idMateria_3 = Problemario.idMateria_3;

                        /********************************************************************************/
                        /********************************* PREGUNTA 1 ***********************************/
                        model.Respuesta.idPR = Pregunta.idPR;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 1; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P1"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 1; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P1"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 1; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P1"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 2 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR +1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 2; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P2"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 2; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P2"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 2; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P2"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 3 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 3; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P3"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 3; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P3"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 3; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P3"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 4 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 4; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P4"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 4; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P4"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 4; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P4"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 5 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 5; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P5"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 5; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P5"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 5; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P5"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 6 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 6; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P6"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 6; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P6"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 6; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P6"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 7 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 7; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P7"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 7; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P7"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 7; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P7"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 8 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 8; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P8"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 8; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P8"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 8; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P8"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 9 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 9; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P9"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 9; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P9"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 9; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P9"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 10 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 10; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P10"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 10; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P10"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 10; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P10"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 11 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 11; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P11"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 11; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P11"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 11; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P11"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 12 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 12; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P12"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 12; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P12"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 12; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P12"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 13 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 13; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P13"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 13; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P13"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 13; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P13"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 14 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 14; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P14"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 14; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P14"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 14; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P14"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 15 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 15; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P15"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 15; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P15"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 15; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P15"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 16 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 16; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P16"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 16; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P16"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 16; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P16"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 17 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 17; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P17"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 17; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P17"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 17; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P17"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 18 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 18; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P18"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 18; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P18"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 18; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P18"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 19 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 19; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P19"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 19; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P19"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 19; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P19"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/
                        /********************************* PREGUNTA 20 ***********************************/
                        model.Respuesta.idPR = model.Respuesta.idPR + 1;
                        //Materia 1
                        model.Respuesta.Pregunta_1 = 20; //#P
                        model.Respuesta.Respuesta_1 = collection["M1_P20"];
                        //Materia 2
                        model.Respuesta.Pregunta_2 = 20; //#P
                        model.Respuesta.Respuesta_2 = collection["M2_P20"];
                        //Materia 3
                        model.Respuesta.Pregunta_3 = 20; //#P
                        model.Respuesta.Respuesta_3 = collection["M3_P20"];

                        db.Respuesta.Add(model.Respuesta);
                        db.SaveChanges();

                        /********************************************************************************/

                        /***** Manejo Problemario_User_I.dbo /*****/
                        model.Problemario_User_I.idPU = idPU;
                        model.Problemario_User_I.UserName = current_user;
                        model.Problemario_User_I.fecha_resp = DateTime.Now;

                        model.Problemario_User_I.nota_1 = calcularNota(model.Problemario_User_I.idPU, model.Problemario_User_I.UserName, 1)[0];
                        model.Problemario_User_I.nota_2 = calcularNota(model.Problemario_User_I.idPU, model.Problemario_User_I.UserName, 2)[0];
                        model.Problemario_User_I.nota_3 = calcularNota(model.Problemario_User_I.idPU, model.Problemario_User_I.UserName, 3)[0];
                        model.Problemario_User_I.nota_p = (model.Problemario_User_I.nota_1 + model.Problemario_User_I.nota_2 + model.Problemario_User_I.nota_3) / 3;


                        db.Problemario_User_I.Add(model.Problemario_User_I);
                        db.SaveChanges();

                        return RedirectToAction("ReporteExpress", "Problemario", new { id = idPU});
                    }
                    return RedirectToAction("Respuesta", "Problemario");
                }
                else
                {
                    return RedirectToAction("Index", "Home", new { msn = "Ya respondió el Problemario Activo, para más Información visite el Reporte General." });   
                }
            }
            else
            {
                return RedirectToAction("Index", "Home", new { msn = "No existen Problemarios Pendientes por Resolver, ya que todos fueron cerrados." });
            }
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // ExtendTime()	Acceso ADMINISTRADOR									        	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult ExtendTime(int id)
        {
            Problemario problemario = db.Problemario.Find(id);
            if (problemario.idEstado!=3)
            {
                ViewBag.Problemario_fecha_exp = Convert.ToDateTime(problemario.fecha_exp).ToString("dd/MM/yyyy");
                return View(problemario);
            }
            else
            {
                return RedirectToAction("Index", new { msn = "No se puede Ampliar el Tiempo de un Problemario Cerrado." });
            }            
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // ExtendTime()	Acceso ADMINISTRADOR									        	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        [HttpPost]
        public ActionResult ExtendTime(Problemario problemario_exp_date)
        {
            if (problemario_exp_date.fecha_exp!=null)
            {
                Problemario problemario_jornada = db.Problemario.Find(problemario_exp_date.idPU); //Problemario para saber Jornada

                var problemarios = (from m in db.Problemario
                                    where m.idEstado != 3
                                    select m).ToList();

                foreach (var problemario_modify in problemarios)
                {
                    problemario_modify.fecha_exp = problemario_exp_date.fecha_exp;
                    db.Entry(problemario_modify).State = EntityState.Modified;
                    db.SaveChanges();
                }

                return RedirectToAction("Index", new { msn = "Ampliación de Tiempo Realizada Correctamente"});
            }
            else
            {
                /****Caso POCO Probable****/
                Problemario problemario_get = db.Problemario.Find(problemario_exp_date.idPU);
                ViewBag.Problemario_fecha_exp = Convert.ToDateTime(problemario_get.fecha_exp).ToString("dd/MM/yyyy");
                return View(problemario_get);
            }
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // HabilitarProblemario()	Acceso ADMINISTRADOR						           	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult HabilitarProblemario(int id)
        {
            Problemario problemario = db.Problemario.Find(id);
            if (problemario.idEstado != 3)
            {
                return View(problemario);
            }
            else
            {
                return RedirectToAction("Index", new { msn = "No se puede Habilitar un Problemario Cerrado." });
            }
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // HabilitarProblemario()	Acceso ADMINISTRADOR						        	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        [HttpPost]
        public ActionResult HabilitarProblemario()
        {
            var problemarios = (from m in db.Problemario
                                where m.idEstado != 3
                                select m).ToList();

            foreach (var problemario_modify in problemarios)
            {
                problemario_modify.idEstado = 1;
                db.Entry(problemario_modify).State = EntityState.Modified;
                db.SaveChanges();
            }

            return RedirectToAction("Index", new { msn = "Habilitación de todos los Problemarios Realizada Correctamente" });
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // CerrarProblemario()	Acceso ADMINISTRADOR					    	           	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult CerrarProblemario(int id)
        {
            Problemario problemario = db.Problemario.Find(id);
            if (problemario.idEstado != 3)
            {
                return View(problemario);
            }
            else
            {
                return RedirectToAction("Index", new { msn = "No se puede Cerrar un Problemario Cerrado." });
            }
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // CerrarProblemario()	Acceso ADMINISTRADOR		    				        	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        [HttpPost]
        public ActionResult CerrarProblemario()
        {
            var problemarios = (from m in db.Problemario
                                where m.idEstado != 3
                                select m).ToList();

            foreach (var problemario_modify in problemarios)
            {    
                /**************************************************************************************/
                /******* ACTUALIZACIÓN de TABLA Problemario_User_I.dbo de JORANDA NO CONTESTADA *******/
                /**************************************************************************************/

                //var user_respond = (from m in db.Problemario_User_I
                //                      where m.idPU == problemario_modify.idPU
                //                      select m.UserName).ToList();

                // PRIMERA ETAPA 1 problemario
                if (problemario_modify.idEtapa == 1)
                {
                    var user_no_respond = (from us in db.User_I
                                            where (!(from up in db.Problemario_User_I
                                                    where up.idPU == problemario_modify.idPU
                                                    select up.UserName).Contains(us.UserName))
                                            select us).ToList();
                    
                    // Verificar si tiene Valores
                    if (user_no_respond.Count() != 0)
                    {
                        foreach (var user in user_no_respond)
                        {
                            /******* Manejo Problemario_User_I.dbo *******/
                            Problemario_User_I problemario_user_i = new Problemario_User_I()
                            {
                                idPU = problemario_modify.idPU,
                                UserName = user.UserName,
                                fecha_resp = DateTime.Now,
                                nota_1 = 999, //Flag de Nota 1 para generar una Jornada no Contestada
                                nota_2 = 999, //Flag de Nota 2 para generar una Jornada no Contestada
                                nota_3 = 999, //Flag de Nota 3 para generar una Jornada no Contestada
                                nota_p = 0
                            };

                            db.Problemario_User_I.Add(problemario_user_i);
                            db.SaveChanges();
                        }
                    }
                }
                else if (problemario_modify.idEtapa == 2) // SEGUNDA ETAPA 3 problemarios
                {
                    var user_no_respond = (from us in db.User_I
                                            where (!(from up in db.Problemario_User_I
                                                    where up.idPU == problemario_modify.idPU
                                                    select up.UserName).Contains(us.UserName)) && us.idRol == problemario_modify.idRol
                                            select us).ToList();

                    //Verificar si tiene valores
                    if (user_no_respond.Count() != 0)
                    {
                        foreach (var user in user_no_respond)
                        {
                            /******* Manejo Problemario_User_I.dbo *******/
                            Problemario_User_I problemario_user_i = new Problemario_User_I()
                            {
                                idPU = problemario_modify.idPU,
                                UserName = user.UserName,
                                fecha_resp = DateTime.Now,
                                nota_1 = 999, //Flag de Nota 1 para generar una Jornada no Contestada
                                nota_2 = 999, //Flag de Nota 2 para generar una Jornada no Contestada
                                nota_3 = 999, //Flag de Nota 3 para generar una Jornada no Contestada
                                nota_p = 0
                            };

                            db.Problemario_User_I.Add(problemario_user_i);
                            db.SaveChanges();
                        }
                    }
                }


                /*************************************************************************************/
                /**************************** FIN JORNADAS NO CONTESTADAS ****************************/
                /*************************************************************************************/

                problemario_modify.idEstado = 3;
                db.Entry(problemario_modify).State = EntityState.Modified;
                db.SaveChanges();
            }

            return RedirectToAction("Index", new { msn = "Cerrado de todos los Problemarios Realizado Correctamente" });

        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // RevisarProblemario()	Acceso ADMINISTRADOR						            	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult RevisarProblemario(int id, int? page = 1)
        {
            Problemario problemario = db.Problemario.Find(id);

            if (problemario.idEstado == 1)
            {
                ViewBag.idPU = problemario.idPU;
                ViewBag.Etapa = db.Etapa.Find(problemario.idEtapa).name;
                ViewBag.idRol = problemario.idRol;
                ViewBag.Jornada = problemario.idJornada;
                ViewBag.Estado = db.Estado.Find(problemario.idEstado).name;
                ViewBag.Archivo = problemario.file_name;
                ViewBag.Fecha = Convert.ToDateTime(problemario.fecha_exp).ToString("dd/MM/yyyy");
                ViewBag.Materia_1 =  db.Materia_1.Find(problemario.idMateria_1).name;
                ViewBag.Materia_2 = db.Materia_2.Find(problemario.idMateria_2).name;
                ViewBag.Materia_3 = db.Materia_3.Find(problemario.idMateria_3).name;

                int pageSize = 10;
                int pageIndex = (page ?? 1);

                var Problemario_User_I = (from m in db.Problemario_User_I
                                                  where m.idPU == problemario.idPU
                                                  select m).ToList();

                ViewBag.n_send = Problemario_User_I.Count();

                return View(Problemario_User_I.ToPagedList(pageIndex, pageSize));
            }
            else
            {
                return RedirectToAction("Index", new { msn = "Solo se puede Revisar un Problemario Habilitado." });
            }
        }


        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // ReporteExpress()	Acceso GUEST        					        	           	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Guest_C, Guest_H, Guest_I")]
        public ActionResult ReporteExpress(int id)
        {
            var current_user = User.Identity.Name;

            var problemario_user_i = (from m in db.Problemario_User_I
                                      where m.idPU == id && m.UserName == current_user
                                      select m).FirstOrDefault();

            if (problemario_user_i != null)
            {
                Problemario problemario = db.Problemario.Find(id);

                /*if (problemario.idEstado != 3)
                {*/
                    User_I User_I = db.User_I.Find(current_user);
                    ViewBag.name = User_I.name;
                    ViewBag.last_name = User_I.last_name;

                    /*Notas del Problemario*/
                    ViewBag.M1_C = calcularNota(id, current_user, 1)[0];
                    ViewBag.M1_I = calcularNota(id, current_user, 1)[1];
                    ViewBag.M1_SC = calcularNota(id, current_user, 1)[2];

                    ViewBag.M2_C = calcularNota(id, current_user, 2)[0];
                    ViewBag.M2_I = calcularNota(id, current_user, 2)[1];
                    ViewBag.M2_SC = calcularNota(id, current_user, 2)[2];

                    ViewBag.M3_C = calcularNota(id, current_user, 3)[0];
                    ViewBag.M3_I = calcularNota(id, current_user, 3)[1];
                    ViewBag.M3_SC = calcularNota(id, current_user, 3)[2];


                    return View(problemario);
                /*}
                else
                {
                    return RedirectToAction("Index", "Home", new { msn = "No se puede ver el Reporte Express de un Problemario Cerrado." });
                }*/
            }
            else
	        {
                return RedirectToAction("Index", "Home", new { msn = "No se encontraron datos para el Reporte Express." });
	        }
        }

        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // ReporteGeneral()	Acceso ADMIN        					        	           	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	id: identificador del Problemario que se desea ver los detalles.	    	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Admin")]
        public ActionResult ReporteGeneral(string id)
        {
            var current_user = id; //User.Identity.Name;
            var idRol = db.User_I.Find(current_user).idRol;

            var problemario_User_I_Etapa_1 = (from m in db.Problemario_User_I
                                              where m.UserName == current_user && m.nProblemario.idEtapa==1
                                              orderby m.nProblemario.idJornada ascending
                                              select m).ToList();

            var problemario_User_I_Etapa_2 = (from m in db.Problemario_User_I
                                              where m.UserName == current_user && m.nProblemario.idEtapa == 2
                                              orderby m.nProblemario.idJornada ascending
                                              select m).ToList();

            //if (problemario_User_I_Etapa_1 != null || problemario_User_I_Etapa_2 != null)
            //{
                    
                //**********************************************************************************//
                //********                CÁLCULO de JORANDAS NO PRESENTADAS                 *******//

                // Número de Jornadas no Contestadas
                //var n_respon_1 = 0;
                //var n_respon_2 = 0;

                //var no_etapa_1 = "";
                //var no_etapa_2 = "";

                //var problemario_Etapa_1 = (from m in db.Problemario
                //                           where m.idEtapa == 1 && m.idEstado == 3
                //                           orderby m.idJornada ascending
                //                           select m).ToList();

                //var problemario_Etapa_2 = (from m in db.Problemario
                //                           where m.idEtapa == 2 && m.idRol == idRol && m.idEstado == 3
                //                           orderby m.idJornada ascending
                //                           select m).ToList();

                //foreach (var item in problemario_Etapa_1)
                //{
                //    var match = problemario_User_I_Etapa_1.Find(i => i.idPU == item.idPU);

                //    if (match == null)
                //    {
                //        n_respon_1 = n_respon_1 + 1;
                //        no_etapa_1 = no_etapa_1 + ", " + item.idJornada; 
                //    }
                //}

                //foreach (var item in problemario_Etapa_2)
                //{
                //    var match = problemario_User_I_Etapa_2.Find(i => i.idPU == item.idPU);

                //    if (match == null)
                //    {
                //        n_respon_2 = n_respon_2 + 1;
                //        no_etapa_2 = no_etapa_2 + ", " + item.idJornada;
                //    }
                //}

                //if (no_etapa_1!="")
                //{
                //    no_etapa_1 = no_etapa_1.Remove(0, 1);
                //}

                //if (no_etapa_2!="")
                //{
                //    no_etapa_2 = no_etapa_2.Remove(0, 1);
                //}
                

                //ViewBag.no_etapa_1 = no_etapa_1;
                //ViewBag.no_etapa_2 = no_etapa_2;

                //**********************************************************************************//
                //**********************************************************************************//


                User_I User_I = db.User_I.Find(current_user);
                ViewBag.name = User_I.name;
                ViewBag.last_name = User_I.last_name;
                ViewBag.idRol = User_I.nRol.name;

                ReporteGeneral reporteGeneral = new ReporteGeneral
                {
                    Problemario_User_I_Etapa_1 = problemario_User_I_Etapa_1,
                    Problemario_User_I_Etapa_2 = problemario_User_I_Etapa_2
                };

                // CALCULO de NOTA GENERAL de PROBLEMARIO
                var problemarios = (from m in db.Problemario_User_I
                                    where m.UserName == current_user
                                    select m);

                if (problemarios.Count() != 0)
                {
                    //ViewBag.nota_final = sum_nota.AsEnumerable().Sum(p => p.nota_p) / (sum_nota.Count());//+n_respon_1+n_respon_2);

                    float sum_nota_1 = 0;
                    float sum_nota_2 = 0;
                    float sum_nota_3 = 0;
                    // Calculo de NOTA FINAL ( Suma de todas las notas)
                    //                        ------------------------
                    //                           N° de Jornadas X 3
                    foreach (var proble in problemarios)
                    {
                        // Notas de Materia 1
                        if (proble.nota_1 != 999)
                        {
                            sum_nota_1 = sum_nota_1 + proble.nota_1;
                        }
                        // Notas de Materia 2
                        if (proble.nota_2 != 999)
                        {
                            sum_nota_2 = sum_nota_2 + proble.nota_2;
                        }
                        // Notas de Materia 3
                        if (proble.nota_3 != 999)
                        {
                            sum_nota_3 = sum_nota_3 + proble.nota_3;
                        }
                    }

                    float numerador = sum_nota_1+sum_nota_2+sum_nota_3;

                    float denominador = problemarios.Count() * 3;
                    float nota_g = numerador / denominador;
                    ViewBag.nota_final_str = Math.Truncate(100 * nota_g) / 100; //+n_respon_1+n_respon_2);
                }
                else
                {
                    //ViewBag.nota_final = 0;
                    ViewBag.nota_final_str = 0;
                }
                

               return View(reporteGeneral);

            //}
            //else
            //{
            //    return RedirectToAction("SearchIndex", "Problemario", new { msn = "No se encontraron datos para el Reporte General." });
            //}
        }

        //***********************************************************************************//
        // Autor:  			Adrian Di Puglia	                		     				*//
        //***********************************************************************************//
        // ReporteGeneral()	Acceso GUEST        					        	           	*//
        // Función que devuelve la vista de los detalles de un Problemario especificado.    *//
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        //                                                                              	*//
        // _________________________________________________________________________________*//
        // Salida:  Vista que posee todos los datos del Problemario deseado.	    		*//
        // _________________________________________________________________________________*//
        [Authorize(Roles = "Guest_C, Guest_H, Guest_I")]
        public ActionResult ReporteGeneralGuest()
        {
            var current_user = User.Identity.Name;
            var idRol = db.User_I.Find(current_user).idRol;

            var problemario_User_I_Etapa_1 = (from m in db.Problemario_User_I
                                              where m.UserName == current_user && m.nProblemario.idEtapa == 1
                                              orderby m.nProblemario.idJornada ascending
                                              select m).ToList();

            var problemario_User_I_Etapa_2 = (from m in db.Problemario_User_I
                                              where m.UserName == current_user && m.nProblemario.idEtapa == 2
                                              orderby m.nProblemario.idJornada ascending
                                              select m).ToList();

            //if (problemario_User_I_Etapa_1.Count() != 0 || problemario_User_I_Etapa_2.Count() != 0)
            //{

                //**********************************************************************************//
                //********                CÁLCULO de JORANDAS NO PRESENTADAS                 *******//

                // Número de Jornadas no Contestadas
                //var n_respon_1 = 0;
                //var n_respon_2 = 0;

                //var no_etapa_1 = "";
                //var no_etapa_2 = "";

                //var problemario_Etapa_1 = (from m in db.Problemario
                //                           where m.idEtapa == 1 && m.idEstado == 3
                //                           orderby m.idJornada ascending
                //                           select m).ToList();

                //var problemario_Etapa_2 = (from m in db.Problemario
                //                           where m.idEtapa == 2 && m.idRol == idRol && m.idEstado == 3
                //                           orderby m.idJornada ascending
                //                           select m).ToList();

                //foreach (var item in problemario_Etapa_1)
                //{
                //    var match = problemario_User_I_Etapa_1.Find(i => i.idPU == item.idPU);

                //    if (match == null)
                //    {
                //        n_respon_1 = n_respon_1 + 1;
                //        no_etapa_1 = no_etapa_1 + ", " + item.idJornada;
                //    }
                //}

                //foreach (var item in problemario_Etapa_2)
                //{
                //    var match = problemario_User_I_Etapa_2.Find(i => i.idPU == item.idPU);

                //    if (match == null)
                //    {
                //        n_respon_2 = n_respon_2 + 1;
                //        no_etapa_2 = no_etapa_2 + ", " + item.idJornada;
                //    }
                //}

                //if (no_etapa_1 != "")
                //{
                //    no_etapa_1 = no_etapa_1.Remove(0, 1);
                //}

                //if (no_etapa_2 != "")
                //{
                //    no_etapa_2 = no_etapa_2.Remove(0, 1);
                //}


                //ViewBag.no_etapa_1 = no_etapa_1;
                //ViewBag.no_etapa_2 = no_etapa_2;

                //**********************************************************************************//
                //**********************************************************************************//


                User_I User_I = db.User_I.Find(current_user);
                ViewBag.name = User_I.name;
                ViewBag.last_name = User_I.last_name;
                ViewBag.idRol = User_I.nRol.name;

                ReporteGeneral reporteGeneral = new ReporteGeneral
                {
                    Problemario_User_I_Etapa_1 = problemario_User_I_Etapa_1,
                    Problemario_User_I_Etapa_2 = problemario_User_I_Etapa_2
                };

                // CALCULO de NOTA GENERAL de PROBLEMARIO
                var problemarios = (from m in db.Problemario_User_I
                                    where m.UserName == current_user
                                    select m);

                if (problemarios.Count() != 0)
                {
                    //ViewBag.nota_final = sum_nota.AsEnumerable().Sum(p => p.nota_p) / (sum_nota.Count());//+n_respon_1+n_respon_2);

                    float sum_nota_1 = 0;
                    float sum_nota_2 = 0;
                    float sum_nota_3 = 0;
                    // Calculo de NOTA FINAL ( Suma de todas las notas)
                    //                        ------------------------
                    //                           N° de Jornadas X 3
                    foreach (var proble in problemarios)
                    {
                        // Notas de Materia 1
                        if (proble.nota_1 != 999)
                        {
                            sum_nota_1 = sum_nota_1 + proble.nota_1;
                        }
                        // Notas de Materia 2
                        if (proble.nota_2 != 999)
                        {
                            sum_nota_2 = sum_nota_2 + proble.nota_2;
                        }
                        // Notas de Materia 3
                        if (proble.nota_3 != 999)
                        {
                            sum_nota_3 = sum_nota_3 + proble.nota_3;
                        }
                    }

                    float numerador = sum_nota_1 + sum_nota_2 + sum_nota_3;

                    float denominador = problemarios.Count() * 3;
                    float nota_g = numerador / denominador;
                    ViewBag.nota_final_str = Math.Truncate(100 * nota_g) / 100; //+n_respon_1+n_respon_2);
                }
                else
                {
                    //ViewBag.nota_final = 0;
                    ViewBag.nota_final_str = 0;
                }

                //**********************************************************************************//
                //********                   CÁLCULO de PROBLEMARIO ACTIVO                   *******//

                var proble_act = (from m in db.Problemario
                                  where m.idEstado == 1 && (m.idRol == "ALL" || m.idRol == idRol)
                                  select m).FirstOrDefault();
                if (proble_act!=null)
                {
                    var proble_act_user = (from m in db.Problemario_User_I
                                            where m.idPU == proble_act.idPU && m.UserName == current_user
                                            select m).FirstOrDefault();

                    /*ViewBag del IF View*/ViewBag.proble_act = proble_act;
                    /*ViewBag del IF View*/ViewBag.proble_act_user = proble_act_user;

                }

                //**********************************************************************************//
                //**********************************************************************************//

                return View(reporteGeneral);

            //}
            //else
            //{
            //    return RedirectToAction("Index", "Home", new { msn = "No se encontraron datos para el Reporte General." });
            //}
        }

        //***********************************************************************************//
        // Autor:  		Adrian Di Puglia    			                     				*//
        //***********************************************************************************//
        // calcularNota()																	*//
        // Función que se encarga de calcular las notas         							*//														 			
        // _________________________________________________________________________________*//
        // Entrada: 																		*//
        // •	idPU: Número de Problemario                                                 *//
        // •	idUser_I: Número de Usuario Asocicado                                       *//
        // _________________________________________________________________________________*//
        // Salida: Nota de Alumno.                                                          *//
        // Nota[0] = Correctas, Nota[1] = Incorrectas, Nora[2] = Sin Contestar		        *//
        // _________________________________________________________________________________*//
        public int[] calcularNota(int idPU, string idUser_I, int materia)
        {
            var correctas = 0;
            var incorrectas = 0;
            var sin_contestar = 0;
            var nota = new int[] { 0, 0, 0 };

            var Preguntas = (from m in db.Pregunta
                             where m.idPU == idPU
                             orderby m.idPR ascending 
                             select m);

            foreach (var Pregunta in Preguntas)
            {
                var Respuesta = (from m in db.Respuesta
                                  where m.idPR == Pregunta.idPR && m.UserName == idUser_I
                                  select m).FirstOrDefault();
                if (materia==1)
                {
                    if (Pregunta.Respuesta_1==Respuesta.Respuesta_1)// Respuesta Correcta
                    {
                        correctas = correctas + 1;
                    }
                    else if (Respuesta.Respuesta_1 == "SC")// Respuesta Sin Contestar
                    {
                        sin_contestar = sin_contestar + 1; 
                    }
                    else if (Pregunta.Respuesta_1 != Respuesta.Respuesta_1)// Respuesta Incorrecta
	                {
                        incorrectas = incorrectas + 1;
	                }
                }
                else if (materia==2)
                {
                    if (Pregunta.Respuesta_2 == Respuesta.Respuesta_2)// Respuesta Correcta
                    {
                        correctas = correctas + 1;
                    }
                    else if (Respuesta.Respuesta_2 == "SC")// Respuesta Sin Contestar
                    {
                        sin_contestar = sin_contestar + 1;
                    }
                    else if (Pregunta.Respuesta_2 != Respuesta.Respuesta_2)// Respuesta Incorrecta
                    {
                        incorrectas = incorrectas + 1;
                    }
                }
                else if (materia==3)
                {
                    if (Pregunta.Respuesta_3 == Respuesta.Respuesta_3)// Respuesta Correcta
                    {
                        correctas = correctas + 1;
                    }
                    else if (Respuesta.Respuesta_3 == "SC")// Respuesta Sin Contestar
                    {
                        sin_contestar = sin_contestar + 1;
                    }
                    else if (Pregunta.Respuesta_3 != Respuesta.Respuesta_3)// Respuesta Incorrecta
                    {
                        incorrectas = incorrectas + 1;
                    }
                }
            }

            nota[0] = correctas;
            nota[1] = incorrectas;
            nota[2] = sin_contestar;

            return (nota);
        }
    }
}
